home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Games / MAME / src / drivers / pkunwar.c < prev    next >
C/C++ Source or Header  |  2000-04-04  |  8KB  |  257 lines

  1. /***************************************************************************
  2.  
  3. ***************************************************************************/
  4.  
  5. #include "driver.h"
  6. #include "vidhrdw/generic.h"
  7.  
  8.  
  9. void nova2001_vh_convert_color_prom(unsigned char *palette, unsigned short *colortable,const unsigned char *color_prom);
  10. WRITE_HANDLER( pkunwar_flipscreen_w );
  11. void pkunwar_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh);
  12.  
  13.  
  14.  
  15. static struct MemoryReadAddress readmem[] =
  16. {
  17.     { 0x0000, 0x7fff, MRA_ROM },
  18.     { 0x8000, 0x8fff, MRA_RAM },
  19.     { 0xa001, 0xa001, AY8910_read_port_0_r },
  20.     { 0xa003, 0xa003, AY8910_read_port_1_r },
  21.     { 0xc000, 0xc7ff, MRA_RAM },
  22.     { 0xe000, 0xffff, MRA_ROM },
  23.     { -1 }  /* end of table */
  24. };
  25.  
  26. static struct MemoryWriteAddress writemem[] =
  27. {
  28.     { 0x0000, 0x7fff, MWA_ROM },
  29.     { 0x8000, 0x87ff, MWA_RAM, &spriteram, &spriteram_size },
  30.     { 0x8800, 0x8bff, videoram_w, &videoram, &videoram_size },
  31.     { 0x8c00, 0x8fff, colorram_w, &colorram },
  32.     { 0xa000, 0xa000, &AY8910_control_port_0_w },
  33.     { 0xa001, 0xa001, &AY8910_write_port_0_w },
  34.     { 0xa002, 0xa002, &AY8910_control_port_1_w },
  35.     { 0xa003, 0xa003, &AY8910_write_port_1_w },
  36.     { 0xc000, 0xc7ff, MWA_RAM },
  37.     { 0xe000, 0xffff, MWA_ROM },
  38.     { -1 }  /* end of table */
  39. };
  40.  
  41. static struct IOWritePort writeport[] =
  42. {
  43.     { 0x00, 0x00, pkunwar_flipscreen_w },
  44.     { -1 }  /* end of table */
  45. };
  46.  
  47.  
  48.  
  49. INPUT_PORTS_START( pkunwar )
  50.     PORT_START    /* IN0 */
  51.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_2WAY )
  52.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_2WAY )
  53.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 )
  54.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
  55.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
  56.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )
  57.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  58.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_VBLANK )
  59.  
  60.     PORT_START    /* IN1 */
  61.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_2WAY | IPF_COCKTAIL )
  62.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_COCKTAIL )
  63.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
  64.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
  65.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
  66.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
  67.     PORT_SERVICE( 0x40, IP_ACTIVE_LOW )
  68.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
  69.  
  70.     PORT_START    /* DSW0 */
  71.     PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
  72.     PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
  73.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  74.     PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
  75.     PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
  76.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  77.     PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
  78.     PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
  79.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  80.     PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
  81.     PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
  82.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  83.     PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
  84.     PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
  85.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  86.     PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
  87.     PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
  88.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  89.     PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
  90.     PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
  91.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  92.     PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
  93.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  94.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  95.  
  96.     PORT_START    /* DSW1 */
  97.     PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coinage ) )
  98.     PORT_DIPSETTING(    0x00, DEF_STR( 3C_1C ) )
  99.     PORT_DIPSETTING(    0x02, DEF_STR( 2C_1C ) )
  100.     PORT_DIPSETTING(    0x03, DEF_STR( 1C_1C ) )
  101.     PORT_DIPSETTING(    0x01, DEF_STR( 1C_2C ) )
  102.     PORT_DIPNAME( 0x04, 0x00, DEF_STR( Cabinet ) )
  103.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  104.     PORT_DIPSETTING(    0x04, DEF_STR( Cocktail ) )
  105.     PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) )
  106.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  107.     PORT_DIPSETTING(    0x08, DEF_STR( On ) )
  108.     PORT_DIPNAME( 0x30, 0x30, DEF_STR( Difficulty ) )
  109.     PORT_DIPSETTING(    0x10, "Easy" )
  110.     PORT_DIPSETTING(    0x30, "Medium" )
  111.     PORT_DIPSETTING(    0x20, "Hard" )
  112.     PORT_DIPSETTING(    0x00, "Hardest" )
  113.     PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
  114.     PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
  115.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  116.     PORT_DIPNAME( 0x80, 0x80, DEF_STR( Free_Play ) )
  117.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  118.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  119. INPUT_PORTS_END
  120.  
  121.  
  122.  
  123. static struct GfxLayout charlayout =
  124. {
  125.     8,8,    /* 8*8 characters */
  126.     2048,    /* 2048 characters */
  127.     4,    /* 4 bits per pixel */
  128.     { 0, 1, 2, 3 },
  129.     { 0*4, 1*4, 2048*16*8, 2048*16*8 + 4, 2*4,  3*4, 2048*16*8 + 8, 2048*16*8 + 12 },
  130.     { 0*8, 2*8, 4*8, 6*8, 8*8, 10*8, 12*8, 14*8 },
  131.     16*8
  132. };
  133.  
  134. static struct GfxLayout spritelayout =
  135. {
  136.     16,16,    /* 16*16 sprites */
  137.     512,    /* 512 sprites */
  138.     4,    /* 4 bits per pixel */
  139.     { 0, 1, 2, 3 },
  140.     { 0*4, 1*4, 512*64*8, 512*64*8 + 4, 2*4,  3*4, 512*64*8 + 8, 512*64*8 + 12,
  141.             0*4+16*8, 1*4+16*8, 512*64*8+16*8, 512*64*8 + 4+16*8, 2*4+16*8,  3*4+16*8, 512*64*8 + 8 + 16*8, 512*64*8 + 12 + 16*8 },
  142.     { 0*8, 2*8, 4*8, 6*8, 8*8, 10*8, 12*8, 14*8,
  143.             0*8+32*8, 2*8+32*8, 4*8+32*8, 6*8+32*8, 8*8+32*8, 10*8+32*8, 12*8+32*8, 14*8 + 32*8  },
  144.     64*8
  145. };
  146.  
  147. static struct GfxDecodeInfo gfxdecodeinfo[] =
  148. {
  149.     { REGION_GFX1, 0x0000, &charlayout,   16*16, 16 },
  150.     { REGION_GFX1, 0x0000, &spritelayout,     0, 16 },
  151.     { -1 } /* end of array */
  152. };
  153.  
  154.  
  155.  
  156. static struct AY8910interface ay8910_interface = {
  157.     2,        /* 2 chips */
  158.     3072000/2, // lax 11/03/1999  (1250000 -> 1536000 ???)
  159.     { 25, 25 },
  160.     { input_port_0_r, input_port_2_r },
  161.     { input_port_1_r, input_port_3_r },
  162.     { 0, 0 },
  163.     { 0, 0 }
  164. };
  165.  
  166.  
  167.  
  168. static struct MachineDriver machine_driver_pkunwar =
  169. {
  170.     /* basic machine hardware */
  171.     {
  172.         {
  173.             CPU_Z80,
  174.             3072000,
  175.             readmem,writemem,0,writeport,
  176.             interrupt,1
  177.         },
  178.     },
  179.     60, DEFAULT_REAL_60HZ_VBLANK_DURATION,
  180.     1,
  181.     0,
  182.  
  183.     /* video hardware */
  184.     32*8, 32*8, { 0*8, 32*8-1, 4*8, 28*8-1 },
  185.     gfxdecodeinfo,
  186.     32,32*16,
  187.     nova2001_vh_convert_color_prom,
  188.  
  189.     VIDEO_TYPE_RASTER,
  190.     0,
  191.     generic_vh_start,
  192.     generic_vh_stop,
  193.     pkunwar_vh_screenrefresh,
  194.  
  195.     /* sound hardware */
  196.     0,0,0,0,
  197.     {
  198.         {
  199.             SOUND_AY8910,
  200.             &ay8910_interface
  201.         }
  202.     }
  203. };
  204.  
  205.  
  206.  
  207. /***************************************************************************
  208.  
  209.   Game driver(s)
  210.  
  211. ***************************************************************************/
  212.  
  213. ROM_START( pkunwar )
  214.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  215.     ROM_LOAD( "pkwar.01r",    0x0000, 0x4000, 0xce2d2c7b )
  216.     ROM_LOAD( "pkwar.02r",    0x4000, 0x4000, 0xabc1f661 )
  217.     ROM_LOAD( "pkwar.03r",    0xe000, 0x2000, 0x56faebea )
  218.  
  219.     ROM_REGION( 0x10000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  220.     ROM_LOAD( "pkwar.01y",    0x0000, 0x2000, 0x428d3b92 )
  221.     ROM_CONTINUE(             0x8000, 0x2000 )
  222.     ROM_LOAD( "pkwar.02y",    0x2000, 0x2000, 0xce1da7bc )
  223.     ROM_CONTINUE(             0xa000, 0x2000 )
  224.     ROM_LOAD( "pkwar.03y",    0x4000, 0x2000, 0x63204400 )
  225.     ROM_CONTINUE(             0xc000, 0x2000 )
  226.     ROM_LOAD( "pkwar.04y",    0x6000, 0x2000, 0x061dfca8 )
  227.     ROM_CONTINUE(             0xe000, 0x2000 )
  228.  
  229.     ROM_REGION( 0x0020, REGION_PROMS )
  230.     ROM_LOAD( "pkwar.col",    0x0000, 0x0020, 0xaf0fc5e2 )
  231. ROM_END
  232.  
  233. ROM_START( pkunwarj )
  234.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  235.     ROM_LOAD( "pgunwar.6",    0x0000, 0x4000, 0x357f3ef3 )
  236.     ROM_LOAD( "pgunwar.5",    0x4000, 0x4000, 0x0092e49e )
  237.     ROM_LOAD( "pkwar.03r",    0xe000, 0x2000, 0x56faebea )
  238.  
  239.     ROM_REGION( 0x10000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  240.     ROM_LOAD( "pkwar.01y",    0x0000, 0x2000, 0x428d3b92 )
  241.     ROM_CONTINUE(             0x8000, 0x2000 )
  242.     ROM_LOAD( "pkwar.02y",    0x2000, 0x2000, 0xce1da7bc )
  243.     ROM_CONTINUE(             0xa000, 0x2000 )
  244.     ROM_LOAD( "pgunwar.2",    0x4000, 0x2000, 0xa2a43443 )
  245.     ROM_CONTINUE(             0xc000, 0x2000 )
  246.     ROM_LOAD( "pkwar.04y",    0x6000, 0x2000, 0x061dfca8 )
  247.     ROM_CONTINUE(             0xe000, 0x2000 )
  248.  
  249.     ROM_REGION( 0x0020, REGION_PROMS )
  250.     ROM_LOAD( "pkwar.col",    0x0000, 0x0020, 0xaf0fc5e2 )
  251. ROM_END
  252.  
  253.  
  254.  
  255. GAME( 1985?, pkunwar,  0,       pkunwar, pkunwar, 0, ROT0, "UPL", "Penguin-Kun Wars (US)" )
  256. GAME( 1985?, pkunwarj, pkunwar, pkunwar, pkunwar, 0, ROT0, "UPL", "Penguin-Kun Wars (Japan)" )
  257.